package com.cnap.model.schedule;

import com.cnap.model.schedule.engine.alg.AlgDeployClusterInfo;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 策略部署列表展示类
 *
 * @author xc
 **/
public class MicroServiceVO {
    /**
     * 微服务id
     */
    private String id;
    /**
     * 应用id
     */
    private String applicationId;
    /**
     * 应用名称
     */
    private String applicationName;
    /**
     * 微服务名称
     */
    private String serviceName;
    // 大小
    private String size;
    // 厂商
    private String provider;
    /**
     * 调度策略
     */
    private StrategyVO scheduleStrategy;
    /**
     * 扩缩容策略
     */
    private List<StrategyVO> scaleStrategys;

    /**
     * 访问路径
     */
    private List<String> paths;
    // 集群
    private List<ClusterInfoVO> clusterInfos;

    // 详细信息
    private List<AlgDeployClusterInfo> algDeployClusterInfos;

    /**
     * 状态
     */
    private String status;
    // 分类
    private String category;
    // 更新时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
    // 用户选择
    private String userChooseCloud;
    // 算法推荐
    private String recommendCloud;
    // 资源强制隔离
    private boolean forcedIsolation;

    /**
     * get
     *
     * @return ForcedIsolation
     */
    public boolean isForcedIsolation() {
        return forcedIsolation;
    }

    /**
     * set
     *
     * @param forcedIsolation forcedIsolation
     */
    public void setForcedIsolation(boolean forcedIsolation) {
        this.forcedIsolation = forcedIsolation;
    }

    /**
     * get
     *
     * @return UserChooseCloud
     */
    public String getUserChooseCloud() {
        return userChooseCloud;
    }

    /**
     * set
     *
     * @param userChooseCloud userChooseCloud
     */
    public void setUserChooseCloud(String userChooseCloud) {
        this.userChooseCloud = userChooseCloud;
    }

    /**
     * get
     *
     * @return RecommendCloud
     */
    public String getRecommendCloud() {
        return recommendCloud;
    }

    /**
     * set
     *
     * @param recommendCloud recommendCloud
     */
    public void setRecommendCloud(String recommendCloud) {
        this.recommendCloud = recommendCloud;
    }

    /**
     * get
     *
     * @return AlgDeployClusterInfos
     */
    public List<AlgDeployClusterInfo> getAlgDeployClusterInfos() {
        return algDeployClusterInfos;
    }

    /**
     * set
     *
     * @param algDeployClusterInfos algDeployClusterInfos
     */
    public void setAlgDeployClusterInfos(List<AlgDeployClusterInfo> algDeployClusterInfos) {
        this.algDeployClusterInfos = algDeployClusterInfos;
    }

    /**
     * get
     *
     * @return Id
     */
    public String getId() {
        return id;
    }

    /**
     * set
     *
     * @param id id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * get
     *
     * @return ApplicationId
     */
    public String getApplicationId() {
        return applicationId;
    }

    /**
     * set
     *
     * @param applicationId applicationId
     */
    public void setApplicationId(String applicationId) {
        this.applicationId = applicationId;
    }

    /**
     * get
     *
     * @return ApplicationName
     */
    public String getApplicationName() {
        return applicationName;
    }

    /**
     * set
     *
     * @param applicationName applicationName
     */
    public void setApplicationName(String applicationName) {
        this.applicationName = applicationName;
    }

    /**
     * get
     *
     * @return ServiceName
     */
    public String getServiceName() {
        return serviceName;
    }

    /**
     * set
     *
     * @param serviceName serviceName
     */
    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

    /**
     * get
     *
     * @return Size
     */
    public String getSize() {
        return size;
    }

    /**
     * set
     *
     * @param size size
     */
    public void setSize(String size) {
        this.size = size;
    }

    /**
     * get
     *
     * @return Provider
     */
    public String getProvider() {
        return provider;
    }

    /**
     * set
     *
     * @param provider provider
     */
    public void setProvider(String provider) {
        this.provider = provider;
    }

    /**
     * get
     *
     * @return ScheduleStrategy
     */
    public StrategyVO getScheduleStrategy() {
        return scheduleStrategy;
    }

    /**
     * set
     *
     * @param scheduleStrategy scheduleStrategy
     */
    public void setScheduleStrategy(StrategyVO scheduleStrategy) {
        this.scheduleStrategy = scheduleStrategy;
    }

    /**
     * get
     *
     * @return ScaleStrategys
     */
    public List<StrategyVO> getScaleStrategys() {
        return scaleStrategys;
    }

    /**
     * set
     *
     * @param scaleStrategys scaleStrategys
     */
    public void setScaleStrategys(List<StrategyVO> scaleStrategys) {
        this.scaleStrategys = scaleStrategys;
    }

    /**
     * get
     *
     * @return Paths
     */
    public List<String> getPaths() {
        return paths;
    }

    /**
     * set
     *
     * @param paths paths
     */
    public void setPaths(List<String> paths) {
        this.paths = paths;
    }

    /**
     * get
     *
     * @return ClusterInfos
     */
    public List<ClusterInfoVO> getClusterInfos() {
        return clusterInfos;
    }

    /**
     * set
     *
     * @param clusterInfos clusterInfos
     */
    public void setClusterInfos(List<ClusterInfoVO> clusterInfos) {
        this.clusterInfos = clusterInfos;
    }

    /**
     * get
     *
     * @return Status
     */
    public String getStatus() {
        return status;
    }

    /**
     * set
     *
     * @param status status
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * get
     *
     * @return Category
     */
    public String getCategory() {
        return category;
    }

    /**
     * set
     *
     * @param category category
     */
    public void setCategory(String category) {
        this.category = category;
    }

    /**
     * get
     *
     * @return UpdateTime
     */
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    /**
     * set
     *
     * @param updateTime updateTime
     */
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
}
